🍿 Final Project: Streaming Platforms Showdown

📊 Data Science I — Spring 2025

The Ology Trio

Introduction

If you’re anything like us, you’ve probably spent hours scrolling through Netflix, Prime Video, Disney+, and Hulu, trying to decide what to watch. With so many options available, it’s easy to feel overwhelmed, especially when it comes to choosing between the platforms. That’s where this analysis comes in—we’re diving into the Rotten Tomatoes scores across these platforms to see which one consistently delivers the highest-rated content. By comparing these ratings, we want to make it easier for you to figure out which platform offers the best movies and shows based on critical reviews, so you can make more confident choices next time you’re deciding what to watch.

Questions

  1. How many titles are available on each platform?
  2. Which platform has the highest-rated content overall (based on Rotten Tomatoes scores)?
  3. How has the number of titles released over time changed for each platform?
  4. Which platform has the most highly rated content (RT score > 90%)?
  5. How do age ratings vary across platforms?
  6. Which platforms focus more on older vs. newer titles?
  7. How do average Rotten Tomatoes scores differ by age rating?
  8. How have average scores changed over time per platform?
  9. Which age ratings are underrepresented on each platform?

Packages Used

# Loading the full tidyverse
library(tidyverse)

#Using this for data manipulation
library(dplyr)

#Cleaning column names
#(e.g., turning "Rotten Tomatoes" into rotten_tomatoes)
library(janitor)

#Show text is to improve font in graphs 
library(showtext)  

# Melt the dataset to long format for easier plotting
#install.packages("reshape2")
library(reshape2) #older version for tidyverse

Unfiltered Data

streaming_data <- read_csv("MoviesOnStreamingPlatforms 2.csv") 
glimpse(read.csv("MoviesOnStreamingPlatforms 2.csv"))
## Rows: 9,515
## Columns: 11
## $ X               <int> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, …
## $ ID              <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
## $ Title           <chr> "The Irishman", "Dangal", "David Attenborough: A Life …
## $ Year            <int> 2019, 2016, 2020, 2001, 2018, 2018, 2020, 2017, 2018, …
## $ Age             <chr> "18+", "7+", "7+", "7+", "18+", "13+", "13+", "13+", "…
## $ Rotten.Tomatoes <chr> "98/100", "97/100", "95/100", "94/100", "94/100", "94/…
## $ Netflix         <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ Hulu            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Prime.Video     <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Disney.         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Type            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
streaming_data <- streaming_data %>% clean_names()

Key Terms

  • ID: A unique identifier for each movie within the data set.Title: The full title of the movie as it appears on the streaming platforms.

  • Age: The recommended age group for the movie’s audience, such as ‘7+’, ‘13+’, ‘16+’, or ‘18+’.

  • Rotten Tomatoes: The movie’s score on Rotten Tomatoes, which reflects critics’ reviews and can be used as a measure of the movie’s reception.

  • Netflix, Hulu, Prime Video, Disney + : A binary indicator (0 or 1) of whether the movie is available on the streaming service, with 1 indicating availability.

  • Type: A categorical indicator distinguishing the content as either a ‘Movie’ or a ‘TV Show’.

  • Year: The release year of the movie, indicating when the movie was first made available to the public.

Key Values and Calculations:

  • The dataset spans over a century of movie releases, from as early as 1914 to 2021.

  • With 9515 unique values for movie titles, the dataset covers a wide range of cinematic works, from classics to recent releases.

Q1. How many titles are available on each platform?

Q2. Which platform has the highest-rated content overall (based on Rotten Tomatoes scores)?

## # A tibble: 4 × 2
##   Platform    avg_score
##   <chr>           <dbl>
## 1 disney           58.3
## 2 hulu             60.4
## 3 netflix          54.4
## 4 prime_video      50.4

Q3. How has the number of titles released over time changed for each platform?

Q4. Which platform has the most highly rated content (RT score > 90%)?

Q5. How do age ratings vary across platforms?

Q6. Which platforms focus more on older vs. newer titles?

Q7. How do average Rotten Tomatoes scores differ by age rating?

Q8. How have average scores changed over time per platform?

Q9. Which age ratings are underrepresented on each platform?

## # A tibble: 4 × 2
##   Platform    rotten_tomatoes
##   <chr>                 <dbl>
## 1 disney                 58.4
## 2 hulu                   60.5
## 3 netflix                54.5
## 4 prime_video            50.5

Limitations

  • The data only includes titles through 2021 and doesn’t account for new releases or changes in platform availability since then.
  • Rotten Tomatoes scores don’t always align with personal taste; we’re using critics’ perspectives only.
  • Our scope didn’t cover genre breakdowns, audience scores, or global content availability.

Summary

If you want something that’s highly rated, family friendly Disney is the way to go which has a library of films from Pixar, Marvel and National Geographic. For a bigger selection Netflix and Prime offer the widest selection of titles and if you’re into more of a mature content, Hulu and Netflix are the best way to go. No matter what you’re in the mood for, this guide will help you pick the best platform for your next watch.